/* 开发环境配置：能让代码运行 */

const {resolve} = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
    entry: './src/js/index.js',
    output: {
        filename: 'js/built.js',
        path: resolve(__dirname, 'build')
    },
    module: {
        rules: [
            // Loader的配置 
            // 处理less资源 
            {
                test: /\.less$/,
                use: [ 'style-loader', 'css-loader', 'less-loader' ]
            },
            // 处理css资源，样式资源会打包到js中，所以不会输出单独的样式文件 
            {
                test: /\.css$/,
                use: [ 'style-loader', 'css-loader' ]
            },
            // 处理样式文件中的图片资源
            {
                test: /\.(jpg|png|gif)$/,
                type: 'asset',
                parser: {
                    dataUrlCondition: {
                        maxSize: 1 * 1024 // 小于1k的图片转换为base64格式字符串 
                    }
                },
                generator: {
                    // 给图片重命名，取图片hash值前10位 
                    filename: 'static/imgs/[hash:10].[ext]',
                }
            },
            // 处理html中的图片资源，如img标签引入的图片 
            {
                test: /\.html$/,
                loader: 'html-loader',
            },
            // 处理其他资源，file-loader就是将资源文件原封不动地输出出去   
            {
                exclude: /\.(html|js|css|less|jpg|png|jif)$/,
                loader: 'file-loader',
                options: {
                    filename: 'static/media/[hash:10].[ext]'
                }
            },
        ]
    },
    plugins: [
        // 处理html资源 
        new HtmlWebpackPlugin({
            template: './src/index.html'
        })
    ],
    devServer: {
        // contentBase: path.join(__dirname, 'build'),  // webpack4使用contentBase，webpack5使用static 
        static: resolve(__dirname, 'build'),
        // 启动gzip压缩 
        compress: true,
        // 端口号 
        port: 3000,
        // 是否自动打开默认浏览器 
        open: true 
    },
    mode: 'development'
}







